import java.util.Vector;

import javax.swing.text.StyledEditorKit.BoldAction;


public class Banco {

	private Vector <Cuenta> cuentas;
	private Vector <Cliente> clientes;
	private Vector <CuentaView> cuentasView;
	//private Vector <MovimientoView> movimientosView;
	
	
	public Banco (){
		cuentas = new Vector();
		clientes = new Vector();
//		cuentasView= new Vector();
		//movimientosView= new Vector();
				
	}


//	public Vector getCuentas() {
//		return cuentas;
//	}
//

	public void setCuentas(Vector cuentas) {
		this.cuentas = cuentas;
	}


	public Vector getClientes() {
		return clientes;
	}


	public void setClientes(Vector clientes) {
		this.clientes = clientes;
	}
	
	private boolean existeCliente (String dni){
		
		for(int i=0; i<clientes.size(); i++){
			if (clientes.elementAt(i).getDni().equalsIgnoreCase(dni))
				return true;	
		}
		return false;
				
	}
	
	public boolean crearCliente(String dni, String apellido, String nombre) 
	{
		if (existeCliente(dni))
			return false;
		else{
			clientes.add (new Cliente (apellido,dni,nombre));
			return true;
		}
	}
	
	private Cliente buscarCliente (String dni){
		
		for(int i=0; i<clientes.size(); i++){
			if (clientes.elementAt(i).getDni().equalsIgnoreCase(dni))
				return clientes.elementAt(i);	
		}
		return null;
				
	}
	
	public int crearCajaAhorro(String dni, float interes) 
	{
		Cliente c;
		c = buscarCliente(dni);
				
		if (c!=null){
			CajaAhorro ca= new CajaAhorro(c,interes);
			cuentas.add(ca);
			return ca.getNumero();
		}
		return 0;
	}
		
	public int crearCuentaCorriente (String dni, float descubierto){
		Cliente c;
		c = buscarCliente(dni);
				
		if (c!=null){
			CuentaCorriente cc= new CuentaCorriente(c,descubierto);
			cuentas.add(cc);
			return cc.getNumero();
		}
		return 0;
	}
	
	private Cuenta buscarCuenta (int nro){
		
		for(int i=0; i<cuentas.size(); i++){
			if (cuentas.elementAt(i).getNumero() == nro)
				return cuentas.elementAt(i);	
		}
		return null;
				
	}
	
	
	public void depositarEnCuenta (int nroCuenta, float monto){
		Cuenta cta;
		cta = buscarCuenta(nroCuenta);
		
		if (cta!=null){
			cta.depositar(monto);
		}
		
	}
	
	public float consultarSaldo (int nroCuenta){
		
		Cuenta cta;
		cta = buscarCuenta(nroCuenta);
		
		if (cta!=null){
			
		return  cta.getSaldo();
		}
		return -100000;	
	}
	
	public boolean extraerMonto (int nroCuenta, float monto){
		Cuenta cta;
		cta = buscarCuenta(nroCuenta);
		
		if (cta!=null){

			boolean extraer = cta.extraer(monto);
			if (extraer){
				return  true;
			}
		
		}
		return false;
		
	}
	
	public Vector getCuentas(){
		
		CuentaView cv;
		cuentasView= new Vector();
		
		
		for(int i=0; i<cuentas.size(); i++){
		cv = cuentas.elementAt(i).getView();
		cuentasView.add(cv);
		}
		
		return cuentasView; 
		
	}
	
	public Vector obtenerMovimientos(int nro){
		Cuenta c;
		MovimientoView mv;
		c= buscarCuenta(nro);
		
		if (c!= null)
		return c.getMovimientosView();
		else
			return null;
		
	}
	
	public boolean debitarMonto(int nro, float monto){
		
		Cuenta c = buscarCuenta(nro);
		
		if (c!= null){
			c.extraer(monto);
			return true;
		}
		return false;
			
	}
	
	
	
}
